home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 23 / AMIGAplus Sonderheft 23 (2000)(Falke)(DE)[!].iso / Updates / Librarys / zee_ini_library / Sources / C / INI_Example / INI_Example.s < prev    next >
Text File  |  1999-08-06  |  29KB  |  1,089 lines

  1.  
  2. ; Storm C Compiler
  3. ; Work:Sources/C/INI_Example/INI_Example.c
  4.  
  5.  
  6.     XREF    _memcpy
  7.     XREF    _exit
  8.     XREF    _std__in
  9.     XREF    _std__out
  10.     XREF    _std__err
  11.     XREF    _SysBase
  12.  
  13.     SECTION ":0",CODE
  14.  
  15.  
  16.     XDEF    _INIT_8_INI_Example_c
  17. _INIT_8_INI_Example_c
  18. L41    EQU    0
  19.     link    a5,#L41
  20. L40
  21. ;0x6f, 0x6e, 0x2e,
  22. ;struct ScreenList WBScreen =
  23.     lea    _WBScreen(a4),a0
  24.     add.w    #$C,a0
  25.     lea    _WBScreen(a4),a1
  26.     lea    $10(a1),a1
  27.     move.l    a1,(a0)
  28.     lea    _WBScreen(a4),a1
  29.     lea    $C(a1),a1
  30.     move.l    a1,$8(a0)
  31. ;struct INIScreen Screens =
  32.     lea    _Screens(a4),a0
  33.     lea    _WBScreen(a4),a1
  34.     move.l    a1,(a0)
  35.     lea    _WBScreen(a4),a1
  36.     move.l    a1,$8(a0)
  37. ;UWORD DefaultColTab[256] =
  38.     lea    _DefaultColTab(a4),a0
  39.     lea    $20(a0),a0
  40.     move.w    #$1DF,d0
  41. L42
  42.     clr.b    (a0)+
  43.     dbra    d0,L42
  44. ;struct NewScreen NewScreenStr =
  45. ;    /* Copy all 256 default colors to updated color t
  46. ;unsigned char ScreenContext[16] = "Screen";
  47. ;unsigned char WindowContext[16] = "Window";
  48.     unlk    a5
  49.     rts
  50.  
  51. ;void InitNode (struct List *NodeList)
  52.     XDEF    InitNode__P04List
  53. InitNode__P04List
  54. L44    EQU    0
  55.     link    a5,#L44
  56.     move.l    $8(a5),a0
  57. L43
  58. ;  NodeList->lh_Head = (struct Node *) &(NodeList->lh_Tail);
  59.     lea    4(a0),a1
  60.     move.l    a1,(a0)
  61. ;  NodeList->lh_Tail = (struct Node *) NULL;
  62.     clr.l    4(a0)
  63. ;  NodeList->lh_TailPred = (struct Node *) &(NodeList->lh_Head);
  64.     move.l    a0,$8(a0)
  65.     unlk    a5
  66.     rts
  67.  
  68. ;int ReadINIScreens (struct iniFile *iniFile)
  69.     XDEF    ReadINIScreens__P07iniFile
  70. ReadINIScreens__P07iniFile
  71. L67    EQU    -$218
  72.     link    a5,#L67
  73.     movem.l    d2-d5/a2/a3/a6,-(a7)
  74. L54
  75. ;  int rc = 20;
  76.     moveq    #$14,d5
  77. ;  unsigned long CurrentScrNum = 1;
  78.     moveq    #1,d4
  79. ;  for (;;
  80. L55
  81. ;  
  82. ;    iniIntToStr ( ScreenContext+6, CurrentScrNum, INI_FORMAT_DEC
  83.     lea    _ScreenContext(a4),a0
  84.     move.l    _INIBase(a4),a6
  85.     move.l    d4,d0
  86.     moveq    #0,d1
  87.     moveq    #0,d2
  88.     moveq    #$20,d3
  89.     lea    6(a0),a0
  90.     jsr    -$1AA(a6)
  91. ;    CurrentScrNum++;
  92.     addq.l    #1,d4
  93. ;    if (!(CurrentContext = iniFindContext ( iniFile, ScreenConte
  94.     move.l    _INIBase(a4),a6
  95.     moveq    #0,d0
  96.     move.l    $8(a5),a0
  97.     lea    _ScreenContext(a4),a1
  98.     jsr    -$1BC(a6)
  99.     tst.l    d0
  100.     bne.b    L57
  101. L56
  102. ;    
  103. ;      rc = 0;
  104.     moveq    #0,d5
  105. ;      
  106.     bra    L66
  107. L57
  108. ;    NewScreenStr.LeftEdge = iniReadLong ( iniFile, ScreenContext
  109.     move.l    _INIBase(a4),a6
  110.     moveq    #0,d0
  111.     moveq    #0,d1
  112.     move.l    $8(a5),a0
  113.     lea    _ScreenContext(a4),a1
  114.     lea    L45(pc),a2
  115.     jsr    -$B4(a6)
  116.     move.w    d0,_NewScreenStr(a4)
  117. ;    NewScreenStr.TopEdge = iniReadLong ( iniFile, ScreenContext,
  118.     move.l    _INIBase(a4),a6
  119.     moveq    #0,d0
  120.     moveq    #0,d1
  121.     move.l    $8(a5),a0
  122.     lea    _ScreenContext(a4),a1
  123.     lea    L46(pc),a2
  124.     jsr    -$B4(a6)
  125.     move.w    d0,_NewScreenStr+2(a4)
  126. ;    NewScreenStr.Width = iniReadLong ( iniFile, ScreenContext,
  127.     move.l    _INIBase(a4),a6
  128.     move.l    #$280,d0
  129.     moveq    #0,d1
  130.     move.l    $8(a5),a0
  131.     lea    _ScreenContext(a4),a1
  132.     lea    L47(pc),a2
  133.     jsr    -$B4(a6)
  134.     move.w    d0,_NewScreenStr+4(a4)
  135. ;    NewScreenStr.Height = iniReadLong ( iniFile, ScreenContext,
  136.     move.l    _INIBase(a4),a6
  137.     move.l    #$100,d0
  138.     moveq    #0,d1
  139.     move.l    $8(a5),a0
  140.     lea    _ScreenContext(a4),a1
  141.     lea    L48(pc),a2
  142.     jsr    -$B4(a6)
  143.     move.w    d0,_NewScreenStr+6(a4)
  144. ;    NewScreenStr.Depth = iniReadLong ( iniFile, ScreenContext,
  145.     move.l    _INIBase(a4),a6
  146.     moveq    #4,d0
  147.     moveq    #0,d1
  148.     move.l    $8(a5),a0
  149.     lea    _ScreenContext(a4),a1
  150.     lea    L49(pc),a2
  151.     jsr    -$B4(a6)
  152.     move.w    d0,_NewScreenStr+$8(a4)
  153. ;    NewScreenStr.ViewModes = iniReadLong ( iniFile, ScreenContex
  154.     move.l    _INIBase(a4),a6
  155.     move.l    #$8000,d0
  156.     moveq    #0,d1
  157.     move.l    $8(a5),a0
  158.     lea    _ScreenContext(a4),a1
  159.     lea    L50(pc),a2
  160.     jsr    -$B4(a6)
  161.     move.w    d0,_NewScreenStr+$C(a4)
  162. ;    NewScreenStr.DefaultTitle = iniReadStr ( iniFile, ScreenCont
  163.     move.l    _INIBase(a4),a6
  164.     moveq    #0,d0
  165.     move.l    $8(a5),a0
  166.     lea    _ScreenContext(a4),a1
  167.     lea    L52(pc),a2
  168.     lea    L51(pc),a3
  169.     jsr    -$C0(a6)
  170.     move.l    d0,_NewScreenStr+$14(a4)
  171. ;    memcpy (ScrColorTable,DefaultColTab,256);
  172.     pea    $100.w
  173.     pea    _DefaultColTab(a4)
  174.     pea    -$210(a5)
  175.     bsr    _memcpy
  176.     add.w    #$C,a7
  177. ;    ScrNumCols = (NewScreenStr.Depth < 8 ? 1L<<NewScreenStr.Dept
  178.     move.w    _NewScreenStr+$8(a4),d0
  179.     cmp.w    #$8,d0
  180.     bge.b    L59
  181. L58
  182.     move.w    _NewScreenStr+$8(a4),d0
  183.     ext.l    d0
  184.     moveq    #1,d2
  185.     asl.l    d0,d2
  186.     bra.b    L60
  187. L59
  188.     move.l    #$100,d2
  189. L60
  190. ;    iniReadWordA ( iniFile, ScreenContext, "ColorTable", (WORD *)
  191.     lea    -$210(a5),a6
  192.     move.l    a6,a3
  193.     move.l    _INIBase(a4),a6
  194.     move.l    d2,d0
  195.     moveq    #0,d1
  196.     move.l    $8(a5),a0
  197.     lea    _ScreenContext(a4),a1
  198.     lea    L53(pc),a2
  199.     jsr    -$CC(a6)
  200. ;    if (!(ScrStrBuf = (struct ScreenList *) iniAllocPMem (sizeof
  201.     move.l    _INIBase(a4),a6
  202.     moveq    #$18,d0
  203.     jsr    -$1E(a6)
  204.     move.l    d0,a2
  205.     cmp.w    #0,a2
  206.     bne.b    L62
  207. L61
  208. ;    
  209. ;      iniFreeNameStr (NewScreenStr.DefaultTitle);
  210.     move.l    _NewScreenStr+$14(a4),a0
  211.     move.l    _INIBase(a4),a6
  212.     jsr    -$30(a6)
  213. ;      
  214.     bra.b    L66
  215. L62
  216. ;    AddTail ((struct List *) &Screens.iniscr_ScrList, (struct No
  217.     move.l    _SysBase(a4),a6
  218.     lea    _Screens(a4),a0
  219.     move.l    a2,a1
  220.     jsr    -$F6(a6)
  221. ;    ScreenStr = OpenScreen (&NewScreenStr);
  222.     move.l    _IntuitionBase(a4),a6
  223.     lea    _NewScreenStr(a4),a0
  224.     jsr    -$C6(a6)
  225.     move.l    d0,a6
  226. ;    ScrStrBuf->iniscr_ScreenPtr = ScreenStr;
  227.     move.l    a2,a0
  228.     move.l    a6,$8(a0)
  229. ;    InitNode ((struct List *) &(ScrStrBuf->iniscr_WinList));
  230.     pea    $C(a2)
  231.     bsr    InitNode__P04List
  232.     addq.w    #4,a7
  233. ;    if (ScreenStr == NULL)
  234.     cmp.w    #0,a6
  235.     bne.b    L64
  236. L63
  237. ;    
  238. ;      iniFreeNameStr (NewScreenStr.DefaultTitle);
  239.     move.l    _NewScreenStr+$14(a4),a0
  240.     move.l    _INIBase(a4),a6
  241.     jsr    -$30(a6)
  242. ;      
  243.     bra.b    L66
  244. L64
  245. ;    LoadRGB4 (&ScreenStr->ViewPort, ScrColorTable, ScrNumCols);
  246.     lea    $2C(a6),a0
  247.     move.l    _GfxBase(a4),a6
  248.     move.l    d2,d0
  249.     lea    -$210(a5),a1
  250.     jsr    -$C0(a6)
  251. L65
  252.     bra    L55
  253. L66
  254.     move.l    d5,d0
  255.     movem.l    (a7)+,d2-d5/a2/a3/a6
  256.     unlk    a5
  257.     rts
  258.  
  259. ;int ReadINIWindows (struct iniFile *iniFile)
  260.     XDEF    ReadINIWindows__P07iniFile
  261. ReadINIWindows__P07iniFile
  262. L92    EQU    -$20
  263.     link    a5,#L92
  264.     movem.l    d2-d5/a2/a3/a6,-(a7)
  265. L76
  266. ;  int rc = 20;
  267.     moveq    #$14,d4
  268. ;  unsigned long CurrentWinNum = 1;
  269.     moveq    #1,d5
  270. ;  for (;;
  271. L77
  272. ;  
  273. ;    iniIntToStr ( WindowContext+6, CurrentWinNum, INI_FORMAT_DEC
  274.     lea    _WindowContext(a4),a0
  275.     move.l    _INIBase(a4),a6
  276.     move.l    d5,d0
  277.     moveq    #0,d1
  278.     moveq    #0,d2
  279.     moveq    #$20,d3
  280.     lea    6(a0),a0
  281.     jsr    -$1AA(a6)
  282. ;    CurrentWinNum++;
  283.     addq.l    #1,d5
  284. ;    if (!(CurrentContext = iniFindContext ( iniFile, WindowConte
  285.     move.l    _INIBase(a4),a6
  286.     moveq    #0,d0
  287.     move.l    $8(a5),a0
  288.     lea    _WindowContext(a4),a1
  289.     jsr    -$1BC(a6)
  290.     tst.l    d0
  291.     bne.b    L79
  292. L78
  293. ;    
  294. ;      rc = 0;
  295.     moveq    #0,d4
  296. ;      
  297.     bra    L91
  298. L79
  299. ;    NewWindowStr.LeftEdge = iniReadLong ( iniFile, WindowContext
  300.     move.l    _INIBase(a4),a6
  301.     moveq    #0,d0
  302.     moveq    #0,d1
  303.     move.l    $8(a5),a0
  304.     lea    _WindowContext(a4),a1
  305.     lea    L45(pc),a2
  306.     jsr    -$B4(a6)
  307.     move.w    d0,_NewWindowStr(a4)
  308. ;    NewWindowStr.TopEdge = iniReadLong ( iniFile, WindowContext,
  309.     move.l    _INIBase(a4),a6
  310.     moveq    #0,d0
  311.     moveq    #0,d1
  312.     move.l    $8(a5),a0
  313.     lea    _WindowContext(a4),a1
  314.     lea    L46(pc),a2
  315.     jsr    -$B4(a6)
  316.     move.w    d0,_NewWindowStr+2(a4)
  317. ;    NewWindowStr.Width = iniReadLong ( iniFile, WindowContext,
  318.     move.l    _INIBase(a4),a6
  319.     move.l    #$280,d0
  320.     moveq    #0,d1
  321.     move.l    $8(a5),a0
  322.     lea    _WindowContext(a4),a1
  323.     lea    L47(pc),a2
  324.     jsr    -$B4(a6)
  325.     move.w    d0,_NewWindowStr+4(a4)
  326. ;    NewWindowStr.Height = iniReadLong ( iniFile, WindowContext,
  327.     move.l    _INIBase(a4),a6
  328.     move.l    #$100,d0
  329.     moveq    #0,d1
  330.     move.l    $8(a5),a0
  331.     lea    _WindowContext(a4),a1
  332.     lea    L48(pc),a2
  333.     jsr    -$B4(a6)
  334.     move.w    d0,_NewWindowStr+6(a4)
  335. ;    NewWindowStr.IDCMPFlags = iniReadLong ( iniFile, WindowConte
  336.     move.l    _INIBase(a4),a6
  337.     move.l    #$20000,d0
  338.     moveq    #0,d1
  339.     move.l    $8(a5),a0
  340.     lea    _WindowContext(a4),a1
  341.     lea    L68(pc),a2
  342.     jsr    -$B4(a6)
  343.     move.l    d0,_NewWindowStr+$A(a4)
  344. ;    NewWindowStr.Flags = iniReadLong ( iniFile, WindowContext,
  345.     move.l    _INIBase(a4),a6
  346.     move.l    #$100F,d0
  347.     moveq    #0,d1
  348.     move.l    $8(a5),a0
  349.     lea    _WindowContext(a4),a1
  350.     lea    L69(pc),a2
  351.     jsr    -$B4(a6)
  352.     move.l    d0,_NewWindowStr+$E(a4)
  353. ;    NewWindowStr.Title = iniReadStr ( iniFile, WindowContext,
  354.     move.l    _INIBase(a4),a6
  355.     moveq    #0,d0
  356.     move.l    $8(a5),a0
  357.     lea    _WindowContext(a4),a1
  358.     lea    L52(pc),a2
  359.     lea    L70(pc),a3
  360.     jsr    -$C0(a6)
  361.     move.l    d0,_NewWindowStr+$1A(a4)
  362. ;    NewWindowStr.MinWidth = iniReadLong ( iniFile, WindowContext
  363.     move.l    _INIBase(a4),a6
  364.     moveq    #$20,d0
  365.     moveq    #0,d1
  366.     move.l    $8(a5),a0
  367.     lea    _WindowContext(a4),a1
  368.     lea    L71(pc),a2
  369.     jsr    -$B4(a6)
  370.     move.w    d0,_NewWindowStr+$26(a4)
  371. ;    NewWindowStr.MaxWidth = iniReadLong ( iniFile, WindowContext
  372.     move.l    _INIBase(a4),a6
  373.     move.l    #$280,d0
  374.     moveq    #0,d1
  375.     move.l    $8(a5),a0
  376.     lea    _WindowContext(a4),a1
  377.     lea    L72(pc),a2
  378.     jsr    -$B4(a6)
  379.     move.w    d0,_NewWindowStr+$2A(a4)
  380. ;    NewWindowStr.MinHeight = iniReadLong ( iniFile, WindowContex